package uniandes.cupi2.photoViewer.listas;

import java.util.ArrayList;
import java.util.Date;

import uniandes.cupi2.photoViewer.mundo.Album;
import uniandes.cupi2.photoViewer.mundo.Foto;

public interface IListaAlbum<Album> extends IListaOrdenada<Album>
{

	/**
	 * Elimina un album del photo viewer
	 * @param eliminado. Eliminado es el album que se busca eliminar
	 * @return
	 */
	public boolean eliminarAlbum(Album eliminado);
    /**
     * Busca un album por la etiqueta que entra por parametro
     * @param nEtiqueta. nEtiqueta es el nombre de la etiqueta del album a eliminar
     * @return
     */
	public Album buscarAlbumPorEtiqueta(String nEtiqueta);
	
	
	public Album buscarAlbumPorNombreDeFoto(String nombreFoto);
	/**
	 * Busca un album por la fecha que entra por parametro
	 * @param fecha. Fecha es la fecha de adicion del album buscado
	 * @return
	 */
	public Album buscarAlbumPorFecha(Date fecha);
	/**
	 * Agrega una etiqueta a un album
	 * @param nEtiqueta. nEtiqueta es la etiqueta a agregar
	 * @return
	 */
	public boolean agregarEtiquetaAlbum(String nEtiqueta);
	/**
	 * Elimina una etiqueta de un album
	 * @param nEtiqueta. nEtiqueta es la etiqueta a eliminar
	 */
	public boolean eliminarEtiquetaAlbum(String nEtiqueta);

	/**
	 * Busca un album por su nombre
	 * @param nombreAlbum. El nomnbre del album buscado 
	 * @return
	 */
	public Album buscarPorNombre( String nombreAlbum );
	
	public IListaFoto<Foto> darFotos();

	public String[ ] toArray( );

}
